home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / MacGofer 0.22d / MacGofer Sources / mac.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-06  |  15.6 KB  |  616 lines  |  [TEXT/MPS ]

  1. /*****************************************************************************
  2.  
  3.   mac.h:  Copyright (c) Kevin Hammond 1993.   All rights reserved.
  4.   
  5.   Definitions for MacGofer.
  6.  
  7. *****************************************************************************/
  8.  
  9. #include "mac_hdrs.h"
  10.  
  11. /**********************************************************************
  12.  
  13.     Standard C Definitions
  14.  
  15. *********************************************************************/
  16.  
  17. #include <stdio.h>
  18. #include <setjmp.h>
  19.  
  20. #define TRUE              1
  21. #define FALSE              0
  22.  
  23. #define NIL              0L
  24.  
  25.  
  26.  
  27.  
  28. /**********************************************************************
  29.  
  30.     Global Constants
  31.  
  32. *********************************************************************/
  33.  
  34. #define    TE_REC_SIZE    32765L    /* Maximum characters in a TE record */
  35.  
  36.  
  37.  
  38. /**********************************************************************
  39.  
  40.     File Types
  41.  
  42. *********************************************************************/
  43.  
  44. #define    GoferCreatorType    'GFER'
  45. #define    GoferTextType        'TEXT'
  46. #define    GoferProjectType    'GPrj'
  47. #define    GoferPrefsType        'GPrf'
  48.  
  49. #define    GoferTextTypes        "TEXT"
  50. #define    GoferProjectTypes    "GPrj"
  51.  
  52.  
  53. /**********************************************************************
  54.  
  55.     File Names
  56.  
  57. *********************************************************************/
  58.  
  59. #define GOFER_TEMP        "Gofer Temp "            /* The prefix for temporary files */
  60. #define    DEFAULT_PRELUDE_NAME    "Prelude"        /* What the prelude's called, by default */
  61. #define    DEFAULT_PREFS_NAME    "Gofer Preferences"    /* What the preference file's called, by default */
  62.  
  63.  
  64.  
  65.  
  66. /*********************************************************************
  67.  
  68.     File Information Resources
  69.  
  70. *********************************************************************/
  71.  
  72.  
  73. #define    GoferFileInfoType    GoferCreatorType
  74. #define    Res_GoferFileInfo    128
  75. #define    FontInfoType        'EFNT'
  76. #define Res_FontInfo        1003
  77. #define MPWFileInfoType        'MPSR'
  78. #define Res_MPWFileInfo        1005
  79.  
  80.  
  81.  
  82.  
  83. /*********************************************************************
  84.  
  85.     Menus
  86.  
  87. *********************************************************************/
  88.  
  89. #define MENUBASE 256
  90.  
  91. /* Apple Menu */
  92. #define MenuApple          0
  93. #define Res_Menu_Apple           (MENUBASE+MenuApple)
  94. #define MItem_About_Gofer       1
  95.  
  96. /* File Menu */
  97. #define MenuFile          1
  98. #define Res_Menu_File           (MENUBASE+MenuFile)
  99. #define MItem_New           1
  100. #define MItem_Open           2
  101. #define MItem_Close           4
  102. #define MItem_Save           5
  103. #define MItem_Save_As           6
  104. #define MItem_Save_A_Copy       7
  105. #define MItem_Revert_to_Saved       8
  106. #define MItem_Delete          10
  107. #define MItem_Page_Setup      12
  108. #define MItem_Print          13
  109. #define MItem_Quit          15
  110.  
  111. /* Edit Menu */
  112. #define MenuEdit          2
  113. #define Res_Menu_Edit           (MENUBASE+MenuEdit)
  114. #define MItem_Undo           1
  115. #define MItem_Cut           3
  116. #define MItem_Copy           4
  117. #define MItem_Paste           5
  118. #define MItem_Clear           6
  119. #define MItem_Select_All       7
  120. #define MItem_Show_Clipboard       9
  121.  
  122. /* Find Menu */
  123. #define MenuFind          3
  124. #define Res_Menu_Find           (MENUBASE+MenuFind)
  125. #define MItem_Find_Replace       1
  126. #define MItem_Find_Again       2
  127. #define MItem_Find_Backwards       3
  128. #define MItem_Replace_Again       4
  129. #define MItem_Defn_Name       6
  130. #define MItem_Defn_Names       7
  131. #define MItem_Defn_Type       8
  132. #define MItem_Defn_Types       9
  133. #define MItem_Goto_Line       10
  134. #define    MItem_Find_Error      11
  135.  
  136. /* Font Menu */
  137. #define MenuFont          4
  138. #define Res_Menu_Font           (MENUBASE+MenuFont)
  139. #define MItem_Font_9          1
  140. #define MItem_Font_10          2
  141. #define MItem_Font_12          3
  142. #define MItem_Font_14          4
  143. #define MItem_Font_Others      5
  144. #define MItem_Font_Base          7
  145.  
  146. /* Options Menu */
  147. #define MenuOptions          5
  148. #define Res_Menu_Options       (MENUBASE+MenuOptions)
  149. #define MItem_Statistics      1
  150. #define MItem_GCStats          2
  151. #define MItem_ExprTypes          3
  152. #define MItem_Literate          4
  153. #define MItem_HaskNums          5
  154. #define MItem_DictVals          6
  155. #define MItem_Trace          7
  156. #define MItem_AutoLoad          9
  157. #define MItem_Multitasking     10
  158. #define Option_Toggle_Limit     MItem_Multitasking
  159. #define MItem_Heap         12
  160. #define MItem_Evidence         13
  161. #define MItem_Arcana         14
  162. #define MItem_Save_Prefs     16
  163.  
  164. /* Windows Menu */
  165. #define MenuWindow          6
  166. #define Res_Menu_Window       (MENUBASE+MenuWindow)
  167. #define MItem_Help           1
  168. #define MItem_Iconise           2
  169.  
  170. /* Project Menu */
  171. #define MenuProject          7
  172. #define Res_Menu_Project       (MENUBASE+MenuProject)
  173. #define MItem_Clear_Project       1
  174. #define MItem_Open_Project       2
  175. #define MItem_Save_Project       3
  176. #define MItem_Save_Project_As        4
  177. #define MItem_Load_File       6
  178. #define MItem_Unload_File       7
  179. #define MItem_Reload           8
  180. #define MItem_Reorder           9
  181. #define PreludeItem         11
  182.  
  183.  
  184.  
  185. /*********************************************************************
  186.  
  187.     Windows
  188.  
  189. *********************************************************************/
  190.  
  191. #define Res_OpenWorksheet     256
  192. #define Res_OpenWindow         257
  193. #define Res_OpenClipboard     258
  194. #define    Res_IconiseWindow    259
  195.  
  196.  
  197.  
  198. /*********************************************************************
  199.  
  200.     Cursors
  201.  
  202. *********************************************************************/
  203.  
  204. #define    gcCursor        1024
  205.  
  206.  
  207.  
  208. /*********************************************************************
  209.  
  210.     Small Icons
  211.  
  212. *********************************************************************/
  213.  
  214. #define    Res_IconUnlocked    258
  215. #define    Res_IconVLocked        259
  216. #define    Res_IconFLocked        260
  217. #define    Res_IconLiterate    261
  218. #define    Res_IconNonLiterate    262
  219. #define    Res_IconHaskellNumbers    263
  220. #define    Res_IconGoferNumbers    264
  221.  
  222. #define    SMALLICONWIDTH         16
  223.  
  224.  
  225.  
  226. /*********************************************************************
  227.  
  228.     (Colour) Icons
  229.  
  230. *********************************************************************/
  231.  
  232. #define    Res_IconWindow        128
  233.  
  234.  
  235.  
  236. /*********************************************************************
  237.  
  238.     Controls
  239.  
  240. *********************************************************************/
  241.  
  242. #define Res_HScroll_bar     272
  243. #define Res_VScroll_bar     273
  244.  
  245. #define    SCROLLBARWIDTH         16
  246.  
  247.  
  248. /*********************************************************************
  249.  
  250.     Buttons
  251.  
  252. *********************************************************************/
  253.  
  254. #define OK              1
  255. #define CANCEL              2
  256. #define SCROLL              4
  257. #define YES              1
  258. #define NO              3
  259.  
  260. #define    FIND              1
  261. #define    TYPE              3
  262. #define    MODULES              4
  263. #define    REPLACE_ALL          3
  264. #define    DEFAULTS          3
  265.  
  266.  
  267. /*********************************************************************
  268.  
  269.     String IDs and Global Defns.
  270.  
  271. *********************************************************************/
  272.  
  273.  
  274. #define    Res_Version_String    128
  275. #define    Res_MinSize_String    129
  276. #define    Res_PreludeName_String    130
  277. #define    Res_StackSize_String    131
  278. #define    Res_PrefsName_String    132
  279.  
  280. extern char *GoferVersionString;
  281. extern unsigned MinMemSize;
  282.  
  283. /*********************************************************************
  284.  
  285.     Memory settings.
  286.  
  287. *********************************************************************/
  288.  
  289.  
  290. #define    DEFAULT_MIN_MEM_SIZE    700000
  291. #define    DEFAULT_HEAP_PERCENTAGE    45
  292.  
  293.  
  294.  
  295. /*********************************************************************
  296.  
  297.     String Lists IDs and indices
  298.  
  299. *********************************************************************/
  300.  
  301. #define Res_Action_Strings    128
  302. #define Res_File_Error_Strings    129
  303. #define Res_Complaint_Strings    130
  304.  
  305. #define ActionOpen          1
  306. #define ActionSave          2
  307. #define ActionDelete          3
  308. #define ActionOpenProj          4
  309. #define ActionSaveProj          5
  310. #define ActionRestorePrefs      6
  311. #define ActionPrint          7
  312. #define ActionCreate          8
  313.  
  314. #define StringFileLocked      1
  315. #define StringDiskLocked      2
  316. #define StringFileBusy          3
  317. #define StringFileError          4
  318. #define StringDiskError          5
  319. #define StringFileNotFound      6
  320. #define StringPermError          7
  321. #define StringUnknownError      8
  322.  
  323. #define StringFileTooLarge      1
  324.  
  325.  
  326.  
  327. /*********************************************************************
  328.  
  329.     Alerts
  330.  
  331. *********************************************************************/
  332.  
  333. #define Res_Debug_Alert            128
  334. #define Res_About_Gofer_Alert        129
  335. #define Res_Error_Alert            130
  336. #define Res_Help_Alert            131
  337. #define Res_Already_Evaluating        132
  338. #define Res_File_Error_Alert        134
  339. #define Res_Complaint_Alert        135
  340. #define Res_CantFindProjectFile_Alert    136
  341. #define Res_Kbd_Buffer_Full_Alert    137
  342. #define Res_AppleEvent_Failed_Alert    138
  343. #define Res_Low_Memory_Alert        139
  344. #define Res_HeapPCTooHigh_Alert        140
  345. #define Res_MemoryNotInitialised_Alert    141
  346.  
  347.  
  348.  
  349. /*********************************************************************
  350.  
  351.     Dialogs
  352.  
  353. *********************************************************************/
  354.  
  355. #define    Res_Dlg_Find        300
  356. #define   Res_DItem_Backwards      4
  357. #define   Res_DItem_Wraparound      5
  358. #define   Res_DItem_Casesens      6
  359. #define   Res_DItem_Finditem      7
  360. #define   Res_DItem_Replaceitem      8
  361.  
  362. #define    Res_Dlg_Help        301
  363. #define    Res_Dlg_Save        302
  364. #define    Res_Dlg_Revert        303
  365.  
  366. #define    Res_Dlg_Unload        304
  367. #define   Res_DItem_Unload      3
  368.  
  369. #define    Res_Dlg_Definitions    305
  370. #define      Res_DItem_Definition      5
  371. #define      Res_DItem_DefnHeader      6
  372.  
  373. #define    Res_Dlg_Other_Size    306
  374. #define      Res_DItem_Other_Size      3
  375. #define      Res_DItem_Size_Change      4
  376.  
  377. #define    Res_Dlg_Arcana        307
  378. #define      Res_DItem_LitErrs      4
  379. #define      Res_DItem_OptFns      5
  380. #define      Res_DItem_FirstErr      6
  381. #define      Res_DItem_TopLevelAmb      7
  382. #define      Res_DItem_PattConf      8
  383. #define      Res_DItem_OverSings      9
  384. #define      Res_DItem_KindExpert     10
  385.  
  386. #define Res_Dlg_Evidence    308
  387. #define      Res_DItem_AnyEvidence      4
  388. #define      Res_DItem_SilentFail      5
  389. #define      Res_DItem_EvidDepth      6
  390.  
  391. #define Res_Dlg_Memory        309
  392. #define      Res_DItem_HeapSize      4
  393. #define      Res_DItem_HeapPC      5
  394. #define      Res_DItem_StackSize      6
  395. #define      Res_DItem_Names      7
  396. #define      Res_DItem_Classes      8
  397. #define      Res_DItem_Instances      9
  398. #define      Res_DItem_Addresses     10
  399. #define      Res_DItem_Fixups     11
  400. #define      Res_DItem_Tycons     12
  401. #define      Res_DItem_Tyvars     13
  402. #define      Res_DItem_Offsets     14
  403. #define      Res_DItem_Selectors     15
  404. #define      Res_DItem_Syntax     16
  405.  
  406. #define Res_Dlg_Type        310
  407. #define      Res_DItem_Type      3
  408. #define      Res_DItem_TypeHeader      5
  409.  
  410. #define Res_Dlg_Goto_Line    311
  411. #define      Res_DItem_Goto      3
  412. #define      Res_DItem_Goto_Change      4
  413.  
  414. #define Res_Dlg_OkToSave    312
  415.  
  416. /* Some Standard File Dialogs */
  417. #define Res_Dlg_Where_Prelude    320
  418. #define Res_Dlg_SFP_Project    402
  419. #define Res_Dlg_SFP_Prelude    403
  420. #define Res_Dlg_SFP_Delete    404
  421. #define Res_Dlg_SFP_Load    405
  422.  
  423. /* The load multiple dialog */
  424. #define Res_Dlg_Load_Multiple    500
  425.  
  426. /* The rearrange dialog */
  427. #define Res_Dlg_Rearrange    501
  428. #define      Res_DItem_Move      1
  429. #define      Res_DItem_Reload      3
  430. #define      Res_DItem_Remove      4
  431. #define      Res_DItem_OldList      5
  432. #define      Res_DItem_OldScroll      6
  433. #define      Res_DItem_NewList      7
  434. #define      Res_DItem_NewScroll      8
  435.  
  436.  
  437. /*********************************************************************
  438.  
  439.     Key Definitions
  440.  
  441. *********************************************************************/
  442.  
  443. #define CMD_KEY_DOWN 256
  444.  
  445. #define ENTERkey        0x03
  446. #define DELETEkey        0x08
  447. #define TABkey            0x09
  448. #define CLEARkey        0x1b
  449. #define    ESC            0x1b
  450. #define LARROWkey        0x1c
  451. #define RARROWkey        0x1d
  452. #define UARROWkey        0x1e
  453. #define DARROWkey        0x1f
  454.  
  455.  
  456.  
  457. /*********************************************************************
  458.  
  459.     Global Variables
  460.  
  461. *********************************************************************/
  462.  
  463. extern EventRecord         myEvent;
  464. extern short            systemVersion;
  465. extern Boolean             WNEAvailable;
  466. extern Boolean             HasAppleEvents;
  467. extern Boolean             quit;
  468. extern OSErr              err;
  469. extern SFReply             Reply;
  470. extern FSSpec            ReplySpec;
  471. extern int             thefrontwindow;
  472.  
  473. extern int             findMyWindowName();
  474. extern Handle            gethandle();
  475. extern ControlHandle        getctlhandle();
  476.  
  477. extern MenuHandle         Menu_Apple, Menu_File, Menu_Edit, Menu_Find,
  478.                          Menu_Font, Menu_Option, Menu_Window, Menu_Project;
  479.  
  480.  
  481. extern int            showStats,         gcMessages,      addType, 
  482.                     coerceNumLiterals, showDicts,       literateErrors,
  483.                 failOnError,       useConformality, andorOptimise,
  484.                 catchAmbigs,       anyEvidence,     silentEvFail,
  485.                 overSingleton,     kindExpert,      literateScripts,
  486.                 traceEval;
  487.  
  488. extern int             MultiTasking, AutoLoad;
  489.  
  490.  
  491. extern int            heapSize,   num_stack,   num_name,    num_classes,
  492.                 num_insts,  num_tycon,   num_tyvars,  num_addrs,
  493.                 num_files,  num_modules, num_offsets, num_tuples,
  494.                 num_fixups, num_indexes, num_syntax,  num_text,
  495.                 num_selects;
  496.  
  497. extern int            Num_stack,  Num_name,    Num_classes,
  498.                 Num_insts,  Num_tycon,   Num_tyvars,  Num_addrs,
  499.                 Num_files,  Num_modules, Num_offsets, Num_tuples,
  500.                 Num_fixups, Num_indexes, Num_syntax,  Num_text,
  501.                 Num_selects;
  502.  
  503. /*********************************************************************
  504.  
  505.   Window information.
  506.  
  507. *********************************************************************/
  508.  
  509. struct WindowStruct {
  510.    int            Flags;        /* Whether an empty record, saved etc. */
  511.    char *        FileName;    /* Name of the Associated File */
  512.    WindowPtr        theWindow;    /* Window pointer */
  513.    WindowPtr        iconWindow;    /* Window pointer for iconic version */
  514.    TEHandle        theTEHandle;    /* TextEdit Handle */
  515.    short        TELock;        /* Semaphore controlling lock of TEHandle */
  516.    ControlHandle    HScroll;    /* Horizontal Scrollbar */
  517.    ControlHandle    VScroll;    /* Vertical Scrollbar */
  518.    short        VRefNum;    /* Working Directory Reference */
  519.    long            DirID;        /* HFS Directory ID */
  520.    long            modtime;    /* Last modified */
  521. };
  522.  
  523. extern struct WindowStruct WindowRec[];
  524.  
  525. #define    scrap            0    /* Clipboard window reference */
  526. #define    worksheet        1    /* Worksheet window reference */
  527.  
  528.  
  529. #define WSAVED            1    /* Bit 1 set if window saved */
  530. #define WOPEN            2    /* Bit 2 set if window open  */
  531. #define    WVIRGIN            4    /* Bit 3 set if window never saved */
  532. #define    WFLOCKED        8    /* Bit 4 set if file locked */
  533. #define    WVLOCKED           16    /* Bit 5 set if volume locked */
  534. #define    WLOCKED                   (WFLOCKED|WVLOCKED)
  535. #define    WICONIC               32    /* Bit 6 set if an icon window */
  536. #define    WLITERATE           64    /* Bit 7 set if a literate window */
  537. #define    WHNUM              128    /* Bit 8 set if a literate window */
  538. #define    WVERS            9    /* Bits 9-17 indicate version */
  539. #define WVERSMASK        0x1F700    /* One bit per allowable version */
  540.  
  541. #define OPEN(i)            (FLAGS(i)&WOPEN)
  542. #define EMPTY(i)        (!OPEN(i))
  543. #define SAVED(i)        (FLAGS(i)&WSAVED)
  544. #define CHANGED(i)        (!SAVED(i))
  545. #define VIRGIN(i)        (FLAGS(i)&WVIRGIN)
  546. #define FLOCKED(i)        (FLAGS(i)&WFLOCKED)
  547. #define VLOCKED(i)        (FLAGS(i)&WVLOCKED)
  548. #define ICONIC(i)        (FLAGS(i)&WICONIC)
  549. #define LITERATE(i)        (FLAGS(i)&WLITERATE)
  550. #define HASKNUM(i)        (FLAGS(i)&WHNUM)
  551.  
  552. #define VERSION(i)        ((FLAGS(i)&WVERSMASK)>>(WVERS-1))
  553.  
  554. #define FILENAME(i)        (WindowRec[i].FileName)
  555. #define WINDOW(i)        (WindowRec[i].theWindow)
  556. #define ICONWINDOW(i)        (WindowRec[i].iconWindow)
  557. #define TEHANDLE(i)        (WindowRec[i].theTEHandle)
  558. #define TELOCK(i)        (WindowRec[i].TELock)
  559. #define HSCROLL(i)        (WindowRec[i].HScroll)
  560. #define VSCROLL(i)        (WindowRec[i].VScroll)
  561. #define FLAGS(i)        (WindowRec[i].Flags)
  562. #define VREFNUM(i)        (WindowRec[i].VRefNum)
  563. #define DIRID(i)        (WindowRec[i].DirID)
  564. #define MODTIME(i)        (WindowRec[i].modtime)
  565.  
  566. #define FAIL(s)            FatalError(s)
  567.  
  568. #define ILLEGAL_WINDOW        (-1)
  569.  
  570.  
  571. /*********************************************************************
  572.  
  573.     File types, used by SF Dialogs
  574.  
  575. *********************************************************************/
  576.  
  577. extern char            texttypelist[];
  578. extern char            projtypelist[];
  579.  
  580. extern OSType            creator;
  581. extern OSType            texttype;
  582. extern OSType            projtype;
  583.  
  584.  
  585.  
  586. /*********************************************************************
  587.  
  588.     System 7 AppleEvents handling
  589.  
  590. *********************************************************************/
  591.  
  592.  
  593. #define SuspResEvt               0x01000000
  594. #define MouseMovedEvt           0xFA000000
  595.  
  596. #if THINKC
  597. int mfprintf(FILE *, const char *, ...);
  598. int mprintf(const char *, ...);
  599. #endif
  600.  
  601. #define    kAEYes            'yes '
  602. #define    kAENo            'no  '
  603. #define    kAEAskUser        'asku'
  604. #define    keyAESaveOptions    'savo'
  605.  
  606. /*********************************************************************
  607.  
  608.     Magic Memory locations (copied from SFMultiGet)
  609.  
  610. *********************************************************************/
  611.  
  612. #define SFSaveDisk     0x214        /* Volume number (negative)      */
  613. #define CurDirStore     0x398        /* Current directory        */
  614.  
  615. /* For Gofer compatibility */
  616. typedef int Bool;